Functional Mockup Units (FMUs) ############################## The following sections explain the use of **FMUs** in **MTF**. The full documentation can be found in the following locations: + `GitHub project page `_ + `FMI documentation page `_ + `FMI v2.x specification `_ + `FMI v3.x specification `_ Introduction ************ A **Functional Mockup Unit (FMU)** is a tool-independent, self-contained program (part) or library along with specifications and definitions how the binary code is to be executed. For more detailed information check the `FMI introduction `_. The **Functional Mockup Interface (FMI)** defines the various *APIs* needed to develop the *FMUs* themselves as well as the tool that can execute them. FMU and FMI =========== In general the term **FMU** defines the *ZIP-archive* containing the binary code as well as the specifications, definitions, and APIs, whereas **FMI** is the interface how the specifications and definitions have to be organized and laid out in order for the **FMU** to be correctly executed. FMI v2.x vs FMI v3.x ==================== In order to fix some problems of the **CoSimulation concept** the following features were added: + Event mode + Early return + Intermediate Update Model Additionally the **Scheduled Execution** model has been added in FMI-3.0. For detailed information check the `respective FMI documentation `_. Execution models (CS vs SE) =========================== Whereas the **FMUs** based on the **CoSimulation** model must provide the solution method and algorithms additionally to their model description algorithms, the **Scheduled Execution** lets the master govern the time progression during the simulation. This provides some distinct advantages especially for concurrent simulation. Fore more information check the `CoSimulation `_ and `Scheduled Execution `_ documentation.